package com.utils;

import io.jsonwebtoken.*;
import io.jsonwebtoken.security.Keys;

import java.util.Date;

/**
 * ClassName: JwtUtils
 * Description:
 *          JWT工具类
 * @author L_Z_R
 * @version 1.0
 * @create 2025/05/28 19:33
 */
public class JwtUtils {
    public static final String SECRET = String.valueOf(Keys.secretKeyFor(SignatureAlgorithm.HS256));
    public static final long EXPIRATION = 86400000L; // 有效时间24小时

    // 生成 JWT 令牌
    public static String generateToken(String userId) {
        return Jwts.builder()
                .setSubject(userId) //用户唯一标识
                .setIssuedAt(new Date()) //签发时间
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION)) //过期时间
                .signWith(SignatureAlgorithm.HS256, SECRET.getBytes()) // 签名算法和密钥
                .compact(); //生成JWT
    }

    // 解析 JWT 令牌
    public static Claims parseToken(String token) {
        return Jwts.parser()
                .setSigningKey(SECRET.getBytes()) // 设置签名密钥
                .parseClaimsJws(token) // 解析JWT
                .getBody(); // 获取JWT的Claims部分
    }
}
